function Page(el,options){
    this.el=document.querySelector(el)
    this.options=options
    this.init()
}
Page.prototype.init=function(){
    this.createTag()
    this.bindevent()
}
Page.prototype.bindevent=function(){
         this.el.onclick=(event)=>{
           let e=event||window.event
           let target=e.target||e.srcElement
         if(target.nodeName=='P'){
            switch(target.innerText){
              case this.options.pageTag.first:
                  this.options.pageInfo.pageNum=1
                  this.createTag()
                  if(this.options.callback) this.options.callback(this.options.pageInfo.pageNum)
              break;
              case this.options.pageTag.prev:
                   if(this.options.pageInfo.pageNum==1) return
                   this.options.pageInfo.pageNum=parseInt(this.options.pageInfo.pageNum)-1
                    this.createTag()
                    if(this.options.callback) this.options.callback(this.options.pageInfo.pageNum)
              break;
              case this.options.pageTag.next:
                   if(this.options.pageInfo.pageNum==this.options.pageInfo.totalPage) return
                   this.options.pageInfo.pageNum=parseInt(this.options.pageInfo.pageNum)+1
                    this.createTag()
                    if(this.options.callback) this.options.callback(this.options.pageInfo.pageNum)
              break;
              case this.options.pageTag.last:
                  this.options.pageInfo.pageNum=this.options.pageInfo.totalPage
                    this.createTag()
              break;
              default:
                  if(parseInt(target.innerHTML)>0){
                    this.options.pageInfo.pageNum=parseInt(target.innerHTML)
                    this.createTag()
                    if(this.options.callback) this.options.callback(this.options.pageInfo.pageNum)
            
                  }

                  break;
            }  





         }

         }
}
Page.prototype.createTag=function(){
    this.el.innerHTML=''
         let pageTag=this.options.pageTag
         
         for(let key in pageTag){
              this.createP('p',pageTag[key],this.el)
         }
         this.createNum()
}
Page.prototype.createP=function(tagName,content,fatherObj){
    let pObj=document.createElement(tagName)
             pObj.innerText=content
             pObj.style.border='1px solid black'
             pObj.style.margin='0px 5px'
             pObj.style.padding='0px 5px'
             pObj.style.display='inline-block'
             if(content==this.options.pageInfo.pageNum) pObj.style.background='orange'
             fatherObj.appendChild(pObj)
}
Page.prototype.createNum=function(){
    let tag3Obj=this.el.querySelector('p:nth-of-type(3)')
    tag3Obj.style.border='none'
    // for(let i=1;i<6;i++){
    //         this.createP('p',i,tag3Obj)
    // }
    let pageNum=this.options.pageInfo.pageNum
    this.options.pageInfo.totalPage=Math.ceil(this.options.pageInfo.totalData/this.options.pageInfo.pageSize)
    let totalPage=this.options.pageInfo.totalPage
    if(totalPage<7){
        for(let i=1;i<=totalPage;i++) this.createP('p',i,tag3Obj)
    }
    else if(pageNum<5){
        for(let i=1;i<=5;i++) this.createP('p',i,tag3Obj)
        this.createP('p','...',tag3Obj)
        this.createP('p',totalPage-1,tag3Obj)
        this.createP('p',totalPage,tag3Obj)
    }
    else if(pageNum==5){
        for(let i=1;i<=7;i++) this.createP('p',i,tag3Obj)
        this.createP('p','...',tag3Obj)
        this.createP('p',totalPage-1,tag3Obj)
        this.createP('p',totalPage,tag3Obj)
    } 
    else if(pageNum>5&&pageNum<=totalPage-4){
        for(let i=1;i<=2;i++) this.createP('p',i,tag3Obj)
        this.createP('p','...',tag3Obj) 
        this.createP('p',pageNum-2,tag3Obj)
        this.createP('p',pageNum-1,tag3Obj)
        this.createP('p',pageNum,tag3Obj)
        this.createP('p',pageNum+1,tag3Obj)
        this.createP('p',pageNum+2,tag3Obj)
        this.createP('p','...',tag3Obj)
        this.createP('p',totalPage-1,tag3Obj)
        this.createP('p',totalPage,tag3Obj)
    }
    else if(pageNum>totalPage-4){
        for(let i=1;i<=2;i++) this.createP('p',i,tag3Obj)
        this.createP('p','...',tag3Obj) 
        for(let i=totalPage-4;i<=totalPage;i++)this.createP('p',i,tag3Obj)
    }
}
